/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package camada.bancodedados.daoimplemente;

import camada.bancodedados.conexao.Conexao;
import eloma.classe.FormaPagamento;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import utilitarios.Exceptions;

/**
 *
 * @author icaro.klinger
 */
public class FormaPagamentoDAOImpl {

    Exceptions exceptions = new Exceptions();

    //@Override
    public boolean inserirFormaPagamento(FormaPagamento forma) {
        PreparedStatement pstm = null;
        try {
            final String SQL_INSERT
                    = "insert into formaPagamento(formaPagamento)values(?)";
            pstm = Conexao.getCon().prepareStatement(SQL_INSERT);
            pstm.setString(1, forma.getNomeForma());
            pstm.executeUpdate();
        } catch (SQLException e) {
            exceptions.Exceptions(e.getMessage(), "FormaPagamentoDAOImpl-Inserir");
            return false;
        }

        return true;
    }

    //@Override
    public FormaPagamento pesquisaFormaPagamento(String formaPagamento) throws Exception {
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            final String SQL_PESQUISA_CLIENTE = "select * from formaPagamento where formaPagamento = ? ";
            stmt = Conexao.getCon().prepareStatement(SQL_PESQUISA_CLIENTE);
            stmt.setString(1, formaPagamento);
            rs = stmt.executeQuery();
            return carregarResultadoSimples(rs);
        } catch (SQLException sqle) {
            exceptions.Exceptions(sqle.getMessage(), "FormaPagamentoDAOImpl-pesquisaFormaPagamento");
            throw new Exception(sqle);
        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "FormaPagamentoDAOImpl-pesquisaFormaPagamento");
            throw new Exception(e);
        } finally {
        }
    }

    //@Override
    public void atualizarFormaPagamento(FormaPagamento forma) {
        PreparedStatement pstm = null;
        try {
            final String SQL_UPDATE
                    = "UPDATE USUARIO SET formaPagamento = ? WHERE idFormaPagamento = ?";
            pstm = (PreparedStatement) Conexao.getCon().prepareStatement(SQL_UPDATE);
            pstm.setString(1, forma.getNomeForma());
            pstm.setInt(2, forma.getIdFormaPagamento());
            pstm.executeUpdate();
        } catch (SQLException e) {
            exceptions.Exceptions(e.getMessage(), "FormaPagamentoDAOImpl-atualizarFormaPagamento");
        }
    }

    // @Override
    public void removerFormaPagamento(int idFormaPagamento) {
        PreparedStatement pstm = null;
        try {
            final String SQL_DELETE = "delete from formaPagamento where idFormaPagamento = ?";
            pstm = (PreparedStatement) Conexao.getCon().prepareStatement(SQL_DELETE);
            pstm.setInt(1, idFormaPagamento);
            pstm.executeUpdate();
        } catch (SQLException e) {
            exceptions.Exceptions(e.getMessage(), "FormaPagamentoDAOImpl-removerFormaPagamento");
        }

    }

    //@Override
    public List<FormaPagamento> pesquisarTodosFormaPagamento() throws Exception {
        PreparedStatement stmt = null;
        ResultSet rs = null;
        String SQL_STATEMENT = "Select * from formaPagamento";
        try {
            stmt = (PreparedStatement) Conexao.getCon().prepareStatement(SQL_STATEMENT);
            rs = stmt.executeQuery();
            return carregarMultiplosResultados(rs);
        } catch (SQLException sqle) {
            exceptions.Exceptions(sqle.getMessage(), "FormaPagamentoDAOImpl-pesquisarTodosFormaPagamento");
            throw new Exception(sqle);
        } catch (Exception e) {
            exceptions.Exceptions(e.getMessage(), "FormaPagamentoDAOImpl-pesquisarTodosFormaPagamento");
            throw new Exception(e);
        } finally {
        }
    }

    public List<FormaPagamento> carregarMultiplosResultados(ResultSet rs) throws SQLException {
        List<FormaPagamento> resultList = new ArrayList<FormaPagamento>();
        while (rs.next()) {
            FormaPagamento dto = new FormaPagamento();
            carregarVO(dto, rs);
            resultList.add(dto);
        }
        return resultList;
    }

    private FormaPagamento carregarResultadoSimples(ResultSet rs) throws SQLException {
        if (rs.next()) {
            FormaPagamento dto = new FormaPagamento();
            carregarVO(dto, rs);
            return dto;
        } else {
            return null;
        }
    }

    private void carregarVO(FormaPagamento dto, ResultSet rs) throws SQLException {
        dto.setIdFormaPagamento(rs.getInt("idFormaPagamento"));
        dto.setNomeForma(rs.getString("formaPagamento"));
    }
}
